package com.demo.woziqi.util;

import com.demo.woziqi.entity.Chess;
import javafx.scene.control.Alert;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;

/**
 * @Author 宋明松
 * @Version V1.0.0
 * @Date 2022-05-16
 * <p>
 * 游戏模式实现类
 * 个人模式
 * 联机模式
 * 人机模式
 */
public class GameModel {

    /**
     * 单机模式，棋子落子方法
     */
    public static void isSingle(Pane pane) {
        if (GameConstant.flag) { // 黑棋下
            Circle circleBlack = new Circle(GameConstant._x * GameConstant.LINE_DISTANCE + GameConstant.MARGIN, GameConstant._y * GameConstant.LINE_DISTANCE + GameConstant.MARGIN, 20, Color.BLACK); // 传入时需要转换为坐标
            if (GameUtil.isExitAll(GameConstant._x, GameConstant._y)) {
                return;
            }
            Chess blackChess = new Chess(GameConstant._x, GameConstant._y, 0);//创建黑棋
            GameConstant.chess.add(blackChess); // 添加黑棋
            pane.getChildren().add(circleBlack); // 将黑棋添加到棋盘中
            if (GameUtil.isWin(blackChess)==1) { // 判断胜负
                GameConstant.isEnd = true; // 当前局结束，
                Alert alert = new Alert(Alert.AlertType.INFORMATION); // 提示信息
                alert.setHeaderText("恭喜，黑棋胜出！");
                alert.show();
            }
            GameConstant.flag = false;
        } else { // 白棋
            Circle circleWheat = new Circle(GameConstant._x * GameConstant.LINE_DISTANCE + GameConstant.MARGIN, GameConstant._y * GameConstant.LINE_DISTANCE + GameConstant.MARGIN, 20, Color.WHITE); // 传入时需要转换为坐标
            if (GameUtil.isExitAll(GameConstant._x, GameConstant._y)) {
                return;
            }
            Chess wheatChess = new Chess(GameConstant._x, GameConstant._y, 1);// 创建白棋
            GameConstant.chess.add(wheatChess); // 添加白棋
            pane.getChildren().add(circleWheat); // 将白棋添加到棋谱中
            if (GameUtil.isWin(wheatChess)==1) {
                GameConstant.isEnd = true; // 当前局结束，
                Alert alert = new Alert(Alert.AlertType.INFORMATION);// 提示信息
                alert.setHeaderText("恭喜，白棋胜出！");
                alert.show();
            }
            GameConstant.flag = true;
        }
    }

    /**
     * 人机模式，棋子落子方法
     */
    public static void isMachine(Pane pane) {
        if (GameConstant.ints.keySet().equals("左")){
            System.out.println("左");
        }else if (GameConstant.ints.keySet().equals("右")){
            System.out.println("右");
        }
        // 产生随机棋子
        int x = (int) (Math.random() * GameConstant.LINE_NUM - 1);
        int y = (int) (Math.random() * GameConstant.LINE_NUM - 1);
        System.out.println(x + ":" + y);
        // 绘画单色棋子
        if (GameUtil.isExitAll(x, y)) {
            isMachine(pane); // 如果存在重绘
            return;
        }
        Circle circleBlack = new Circle(x * GameConstant.LINE_DISTANCE + GameConstant.MARGIN, y * GameConstant.LINE_DISTANCE + GameConstant.MARGIN, 20, Color.WHITE); // 传入时需要转换为坐标
        Chess blackChess = new Chess(x, y, 1);//创建黑棋
        GameConstant.chess.add(blackChess); // 添加棋子
        pane.getChildren().add(circleBlack); // 将黑棋添加到棋盘中
        GameConstant.flag = true; // 更改下棋顺序
    }
}

